﻿namespace Prism.Regions.Navigation;

/// <summary>
/// Provides a way for objects involved in navigation to be notified of navigation activities.
/// </summary>
public interface IRegionAware
{
    /// <summary>
    /// Called when the implementer has been navigated to.
    /// </summary>
    /// <param name="navigationContext">The navigation context.</param>
    void OnNavigatedTo(INavigationContext navigationContext);

    /// <summary>
    /// Called to determine if this instance can handle the navigation request.
    /// </summary>
    /// <param name="navigationContext">The navigation context.</param>
    /// <returns>
    /// <see langword="true"/> if this instance accepts the navigation request; otherwise, <see langword="false"/>.
    /// </returns>
    bool IsNavigationTarget(INavigationContext navigationContext);

    /// <summary>
    /// Called when the implementer is being navigated away from.
    /// </summary>
    /// <param name="navigationContext">The navigation context.</param>
    void OnNavigatedFrom(INavigationContext navigationContext);
}
